package com.jia.jianzhiOffer;

/**
 * 剑指 Offer 60. n个骰子的点数
 *
 *
 */
public class Pro60 {
    /**
     *
     * dp[s][n] s表示和，b表示骰子个数
     * dp[s][n] = dp[s-1][n-1] + dp[s-2][n-1]+ dp[s-3][n-1]
     *          + dp[s-4][n-1]+ dp[s-5][n-1]+ dp[s-6][n-1]
     *
     *
     * @param n
     * @return
     */
    public double[] twoSum(int n) {
        int[][] dp=new int[n+1][6*n+1];
        double[] ans=new double[5*n+1];
        double all=Math.pow(6,n);
        for(int i=1;i<=6;i++)
            dp[1][i]=1;
        for(int i=1;i<=n;i++){
            for(int j=i;j<=6*n;j++){
                for(int k=1;k<=6;k++){
                    dp[i][j]+=j>=k?dp[i-1][j-k]:0;
                    if(i==n)
                        ans[j-n]=dp[i][j]/all;
                }
            }
        }
        return ans;
    }
}
